package com.bysj.sausys.dao;

import com.bysj.sausys.beans.PageQuery;
import com.bysj.sausys.model.SysAssAct;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 社团活动申请Mapper接口
 *
 * @author WangZK
 */
public interface SysAssActMapper {

    /**
     * 根据id删除社团活动申请单
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 保存社团活动申请单
     *
     * @param record
     * @return
     */
    int insertSelective(SysAssAct record);

    /**
     * 根据id获取社团活动申请单
     *
     * @param id
     * @return
     */
    SysAssAct selectByPrimaryKey(Integer id);

    /**
     * 更新社团活动申请单
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(SysAssAct record);

    /**
     * 根据当前用户统计社团活动申请单数量
     *
     * @param assId
     * @return
     */
    int countByAssId(@Param("assId") Integer assId);

    /**
     * 根据当前用户分页获取社团活动申请单
     *
     * @param pageQuery
     * @param assId
     * @return
     */
    List<SysAssAct> getPageByAssId(@Param("pageQuery") PageQuery pageQuery, @Param("assId") Integer assId);

    /**
     * 根据id、社团id、活动名称统计审核未完成的社团申请单的数量
     *
     * @param id
     * @param assId
     * @param actName
     * @return
     */
    int countByActNameAndAssIdAndAuditNoComp(@Param("id") Integer id, @Param("assId") Integer assId, @Param("actName") String actName);

    /**
     * 根据id修改参团活动申请单状态
     *
     * @param id
     * @param status
     * @return
     */
    int updateStatusById(@Param("id") Integer id, @Param("status") Integer status);

    /**
     * 修改社团活动申请状态
     *
     * @param map
     * @return
     */
    int updateStatus(@Param("map") Map map);

    /**
     * 根据审批状态统计社团活动申请的总数
     *
     * @param auditStatus
     * @return
     */
    int countByAuditStatus(@Param("auditStatus") Integer auditStatus);

    /**
     * 根据审批状态分页获取社团活动申请
     *
     * @param auditStatus
     * @param pageQuery
     * @return
     */
    List<SysAssAct> selectByAuditStatus(@Param("auditStatus") Integer auditStatus,@Param("pageQuery") PageQuery pageQuery);
}